#ifndef ACTIONSEM
#define ACTIONSEM
#define ID 257
#define BEGIN 258
#define RETURN 259
#define END 260
#define IF 261
#define ELSE 262
#define THEN 263
#define MAYO_IGUAL 264
#define MENOR_IGUAL 265
#define IGUAL_IGUAL 266
#define DISTINTO 267
#define LOOP 268
#define ASIGNACION 269
#define CTE 270
#define PRINT 271
#define CADENA 272
#define ULONG 273
#define UNTIL 274
#define MAYOR_IGUAL 275
#define FUNCTION 276
#define ERROR_CADENA 277
#define ERROR_COMENTARIO 278
#define ERROR_SIMBOLO 279
#define INTERROGACION 280
#define NADA 281
#include <vector>
#include <iostream>
#include<string>

using namespace std;

class ActionSem {
public:
    ActionSem();
    virtual ~ActionSem();
    virtual int Activar(char c); //Acciona la acci�n semantica
    string getBuffer();
    int getposBuff();
    void setBuffer(vector<char> buf);
   // void actualizar();
    void addBuff(char c);
    void eliminar();
    void resetBuff();
    void setconsume(bool c);
    bool getconsume();
    void setErr(bool e);
    bool getErr();
    //   static int posBuff;
private:
  //son estaticos para ahorrar memoria, todas las acciones semanticas deben referenciar al mismo buffer.
   static vector<char> buffer;
   bool consume;

    bool err;




};

#endif // ACTIONSEM_H
